package com.frank.synchronizeProblem;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * @author 小石潭记
 * @date 2021/8/25 9:38
 * @Description: Spring AOP的底层是动态代理技术
 */
public class Main {

    public static void main(String[] args) {
            // 目标对象
            Object target = null;
            Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Main.class}, new InvocationHandler() {
                @Override
                public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                    // 但凡带有@Transcational注解的方法都会被拦截
                    // 1... 开启事务
                    method.invoke(target);
                    // 2... 提交事务
                    return null;
                }
            });
        }
}
